1. Field of the Invention
The present invention relates generally to the field of graphics processing and more specifically to a system and method for rendering and displaying high-resolution images.
2. Description of the Related Art
A typical computing system includes a central processing unit (CPU), an input device, a system memory, one or more graphics processing units (GPUs), and one or more display devices. A variety of software application programs may run on the computing system. The CPU usually executes the overall structure of the software application program and configures the GPUs to perform specific tasks in the graphics pipeline (the collection of processing steps performed to transform 3-D scenes into 2-D images). Components within the GPUs then transmit the 2-D images through video connectors and video cables to drive the display devices. For example, a scanout unit within a GPU may transmit images through a digital video interface (DVI) connector and a video cable to drive a liquid crystal display (LCD).
Each display device has a maximum resolution that determines the maximum number of pixels in each dimension that the display device may display. Similarly, each video connector has a maximum bandwidth that determines the maximum number of pixels that the video connector may transmit at a given frequency. Typically, each GPU may drive at most two video connectors. To accommodate these hardware limitations, some computing systems are configured to display high-resolution images using multiple GPUs to transmit different portions of the images through multiple video connectors to one or more display devices. For example, a computing system may include four GPUs, four video connectors, and four display devices that are arranged in close proximity to create the illusion of a single, high-resolution, display surface. In such a computing system, each of the four GPUs may be configured to transmit one quadrant of each rendered image frame through one of the video connectors to a corresponding display device.
However, current systems are not well equipped to send high-resolution images across multiple GPUs. For example, in one approach, the operating system and the application programs are configured to interact with each GPU separately. An application program may determine the appropriate visible pixels for each GPU and transmit graphics calls and graphics data to each of the GPUs. One drawback to this approach, however, is that each application program needs to be written specifically to handle multiple GPUs. Furthermore, in such an approach, the number of graphics calls and data that each application program transmits is proportional to the number of GPUs. Transmitting this quantity of data may reduce the performance of the computing system. In addition, since the operating system perceives multiple, independent GPUs, the operating system may make assumptions that do not reflect the optimal behavior for the entire display surface. For example, if a user maximizes a graphical window, then the operating system may resize the window to fill only a single display device attached to one of the GPUs, not all of the display devices.
In another approach, the graphics driver may be configured to receive a single stream of graphics calls and data from each application, generate the appropriate graphics commands for each of the GPUs, and transmit the graphics commands and data to each of the GPUs. This solution eliminates the need for application programs to directly interact with the multiple GPUs. However, although the quantity of graphics commands and data that each application program transmits is reduced, the quantity of graphics commands and data that the graphics driver transmits is still proportional to the number of GPUs. Therefore, the efficiency of the computing system may still be reduced. Furthermore, this solution does not address the sub-optimal behavior of the operating system relative to the display surface.
As the foregoing illustrates, what is needed in the art is a more flexible and efficient technique for rendering and displaying high-resolution images.